package com.fpd.base.mapper;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

import com.fpd.model.ro.PageRO;

/**
 * @desc mapper基类接口
 * @author wujiangbo
 * @date 2019年11月6日 上午10:42:09
 */
public interface BaseMapper<ID extends Serializable, T> {

	/**
	 * 新增资源
	 * 
	 * @param t 新增的数据
	 * @return 受影响行数
	 */
	int insert(T t);

	/**
	 * 删除
	 * 
	 * @param id 主键id
	 * @return 受影响行数
	 */
	int delete(ID id);

	/**
	 * 修改资源
	 * 
	 * @param t 修改的数据
	 * @return 受影响行数
	 */
	int update(T t);

	/**
	 * 查询详情
	 * 
	 * @param id 主键id
	 * @return
	 */
	T selectById(ID id);

	/**
	 * 查询列表(支持分页)
	 * 
	 * @param params 查询条件
	 * @return
	 */
	List<T> selectByParams(Map<String, Object> params);

	/**
	 * 查询列表总条数(支持分页)
	 * 
	 * @param params 查询条件
	 * @return
	 */
	int selectByParamsCount(Map<String, Object> params);

	/**
	 * 查询列表(支持分页)
	 * 
	 * @param pageRO 查询条件
	 * @return
	 */
	List<T> selectByPageRO(PageRO pageRO);

	/**
	 * 查询列表总条数(支持分页)
	 * 
	 * @param pageRO 查询条件
	 * @return
	 */
	int selectByPageROCount(PageRO pageRO);

}
